package com.sunyur.tailor.channel.service.inner.invoice.service;

import com.sunyur.tailor.channel.common.middle.base.ChannelResult;
import com.sunyur.tailor.channel.service.inner.invoice.model.InvoiceHeadModel;
import com.sunyur.tailor.channel.service.inner.invoice.model.InvoiceItemModel;
import com.sunyur.tailor.channel.service.inner.invoice.param.*;

import java.util.List;

/**
 * @ClassName InvoiceService
 * @Description 商城发票接口
 * @Author yu.chen
 * @Date 2021/4/29 4:31
 * @Version 1.0
 **/
public interface SunyurInvoiceService {

    /**
     * @description 预制发票批量业务确认
     * @param invoiceBusinessConfirmParamList
     * @return com.sunyur.tailor.channel.common.middle.base.ChannelResult
     * @author yu.chen
     * @date 2021/4/29 4:34
     * @Version v1.0
     */
    ChannelResult batchConfirmBusinessInvoice(InvoiceBusinessConfirmParam invoiceBusinessConfirmParamList) throws Exception;

    /**
     * 指定发票单编号，获取对发票单的头信息
     * @author HuBaoding
     * @param param
     * @return
     * @date 2021年5月17日15:36:03
     */
    ChannelResult<InvoiceHeadModel> getInvoice(InvoiceHeadParam param);

    /**
     * @Author pengbing
     * @Description //指定发票单编号，获取对发票单的行信息
     * @Date 15:12 2021/7/7
     * @Param [invoiceItemParam]
     * @return com.sunyur.tailor.channel.common.middle.base.ChannelResult<java.util.List<com.sunyur.tailor.channel.service.inner.invoice.model.InvoiceItemModel>>
     **/
    ChannelResult<List<InvoiceItemModel>> listInvoiceOrderItem(InvoiceItemParam invoiceItemParam) throws Exception;

    /**
     * @Author XuHui
     * @Description 10-单个审核预制发票(支持业务/财务,拒绝/确认)【已上线】
     * @Wiki http://doc.sunyur.com/pages/viewpage.action?pageId=158630033
     * @Date 11:57 2022/4/13
     **/
    ChannelResult singleConfirm(InvoiceReq invoiceReq) throws Exception;

    /**
     * @Author XuHui
     * @Description 16-预制发票支付回传接口【已上线】
     * @Wiki http://doc.sunyur.com/pages/viewpage.action?pageId=222757395
     **/
    ChannelResult payback(PaybackParam paybackParam) throws Exception;

    /**
     * @Author XuHui
     * @Description 26-外部同步付款申请接口
     * @wiki http://doc.sunyur.com/pages/viewpage.action?pageId=436469993
     */
    ChannelResult payOrderCreate(PayOrderParam param) throws Exception;

}
